a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

c#入門之枚舉和結構體使用詳解(控制臺接收字符串以相反的方向輸出)

2020-01-24 02:42:02
字體:
來源:轉載
供稿:網友

枚舉、結構
枚舉的類型有限(short、byte...)且是相同的,在MSDN上找到枚舉的一些示例,覺得這個還不錯:

復制代碼 代碼如下:

enum myWeekDay { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
int i = 3;
myWeekDay today = (myWeekDay)i;

枚舉是需要先聲明的,然后再通過新建一個變量(today)為枚舉類型來使用。枚舉默認的基本類型值從0開始,遞增1,這叫等差數列。

枚舉聲明時,建議放在命名空間,當然,也可以放在類或結構中。將其它變量賦值給枚舉類型時,需要強制轉換,例如:today = (myWeekDay)myByte。當然,還有Enum.Parse(typeof(),)命令,就不具體研究了,用時再來看。

而結構(struct)就比較好用了,一個結構內支持不同基礎數據類型。同樣需要先聲明結構,然后再聲明變量為該結構類型,從而使用:

復制代碼 代碼如下:

enum orientation : byte { north = 1, south = 2, east = 3, west = 4};
struct route
{
    public orientation direction;
    public double distance;
}

使用public:讓調用該結構的代碼可以訪問該結構的成員。具體應用:

復制代碼 代碼如下:

route myRoute;
int myDirection = -1;
double myDistance;
Console.WriteLine("1) North/n2) South/n3) East/n4) West");
do
{
    Console.WriteLine("請選擇一個行駛方向:");
    myDirection = Convert.ToInt32(Console.ReadLine());
} while (myDirection < 1 || myDirection > 4);
Console.WriteLine("請輸入一個距離:");
myDistance = Convert.ToDouble(Console.ReadLine());
myRoute.direction = (orientation)myDirection;
myRoute.distance = myDistance;
Console.WriteLine("指定方向 {0} 的距離是 {1}", myRoute.direction, myRoute.distance);

注意myRoute.direction = (orientation)myDirection這一行代碼,應該是枚舉的應用場景:只需要指明枚舉值中的基本類型值i,再通過(enumName)i的方式,即可取得對應的字符串。

聲明一個結構:route(創建的結構名) myRoute,再通過 myRoute.屬性 的方式訪問結構中的成員。

數組

印象中的數組總是比較復雜的東東。一個不錯的例子:需要存儲10個同學的姓名,使用數組即可簡單解決,首先聲明數組:

復制代碼 代碼如下:

string[] friendNames = new string [arrayCount];
string[] friendNames = {"張三","李四","王五","謝六","陳七"};

第一行只初始化數組大小,可選 常數 或 常量,初始化后,才可使用friendNames[0]的方式為數組元素賦值。第二行直接聲明數組,并且初始化了數組的內容。

可使用for循環,配合friendNames.Length的大小,來訪問數組值,注意第1個元素的位置是0。也可使用foreach,并且不擔心超出數組范圍。foreach與for的區別在于,foreach是只讀訪問。

復制代碼 代碼如下:

foreach (string myStr in friendNames)
{
    Console.WriteLine(myStr);
}

多維數組分為矩形數組(多行的每行元素個數相同)、鋸齒數組(多行的每行元素個數不同,并可能存在 {列1{行1{層1,層2},行2},列2...}),當然,同樣可以使用foreach的方式,取出所有元素的內容,多嵌套一個foreach即可:

復制代碼 代碼如下:

int[][] jaggedIntArray = { new int[] { 1, 2, 3 }, new int[] { 4, 5 }, new int[] { 6, 7, 8, 9 }, new int[] {10, 11} };
foreach(int[] topArray in jaggedIntArray)
{
    foreach (int bottomArray in topArray)
    {
        Console.Write("{0} ", bottomArray);
    }
    Console.Write("/n");
}

注意:這兒用的都是[]或{},沒有用()的方式哈,不要總寫錯括號,很低級。

字符串處理
這個就有意思多了。可以通過myString[1]的方式訪問字符串中的每個字符,第1個字符位是0:

復制代碼 代碼如下:

String myString = "  HeLlO WoRlD ";
char myChar = myString[1];

使用ToCharArray(),獲取一個分解myString每個字符后的char數組:

復制代碼 代碼如下:

char[] myChars = myString.ToCharArray();

還可以使用myString.Length獲取字符串的數量,使用myString.ToLower()轉為大寫,myString.ToUpper()轉為小寫。注意:ToLower()、ToUpper()并不會改變變量本身的值的大小寫,還需要用myString = myString.ToLower()才能修改變量本身的值。

myString.Trim()可以去掉字符串前、后的空格,還有TrimStart()和TrimEnd(),分別去掉前面和后面的空格。還可以使用Trim(myChar[])的方式,指定去除前后的內容不限于空格(char[] myChar = {' ','s'}):

復制代碼 代碼如下:

myString = "  sfrost/110110200010101100-13090909880 ";
char mykg = ' ';
char[] myxhx = {'-','/'};
String[] myStrings = myString.Trim(mykg).Split(myxhx);
Console.WriteLine("myStrings[0] = {0}", myStrings[0]);
Console.WriteLine("myStrings[1] = {0}", myStrings[1]);
Console.WriteLine("myStrings[2] = {0}", myStrings[2]);

最近剛好在搞微信開發,在C#中,上面這個例子,就可以實現以一個(些)關鍵字分解用戶輸入的個人信息。例子中使用的Split()方法,同樣的可以使用char數組來指明分解的標識。強調一下,Split分解字符串的位置可以是多個不同標記的位置。

結語
從這章開始,很多內容都可以馬上做一些小的課題了,呵呵。不管是枚舉(同類型)、結構(成員不同類型)、數組(一維、矩形[二維]、鋸齒[不規則多維])、以及字符串處理,還有枚舉與普通變量之間的值如何轉換,數組如何聲明、初始化和訪問等等。而字符串的處理就太有意思了,特別是split,還有replace,再應用char數組,可以說是錦上添花啊。

附:習題案例

編寫一個控制臺應用程序,接收用戶輸入的字符串,將字符串的順序以輸入時相反的方向輸出:

復制代碼 代碼如下:

Console.WriteLine("請輸入需要交換位置的字符串:");
String myString = Console.ReadLine().Trim();
Console.WriteLine("{0}", myString.Length);
String tmpStr = "";
for (int i = myString.Length; i > 0; i--)
{
    tmpStr += myString[i-1];
}
Console.WriteLine(tmpStr);

編寫一個控制臺應用程序,接收用戶輸入的字符串,用yes替換字符串中的所有no:

復制代碼 代碼如下:

Console.WriteLine("請輸入帶有no的字符串:");
myString = Console.ReadLine().ToLower().Trim();
Console.WriteLine("用 yes 替換掉 {0} 中的 no 后:{1}", myString, myString.Replace("no", "yes"));

編寫一個控制臺應用程序,給字符串的每個單詞加上引號(我以為,單詞間肯定有空格):

復制代碼 代碼如下:

Console.WriteLine("請輸入帶有空格的單詞:");
String myWord = Console.ReadLine().Trim();
String[] myWords = myWord.Split(' ');
myWord = "";
foreach(String tmpWord in myWords)
{
    myWord += "/"" + tmpWord + "/" ";
}
Console.WriteLine("添加引號后的句子:{0}", myWord);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美淫视频| 中文字幕一二三区有限公司 | 欧美一二三四成人免费视频 | 先锋影音在线观看 | 午夜精品久久久久久久久久久久久蜜桃 | 青草精品 | 中国一级免费毛片 | 精品一区二区三区四区五区 | 国产午夜精品一区二区三区 | 亚洲精品日韩综合观看成人91 | 在线成人| www.一区二区| 精品一区二区三区在线视频 | 中文字幕一级毛片 | 草草草影院 | 精品久久中文字幕 | 日本三级做a全过程在线观看 | 中文字幕av一区二区三区免费看 | av国产精品毛片一区二区小说 | 午夜日韩 | 亚洲福利一区 | 伊人干综合 | 仙踪林久久久久久久999 | 久久黄色| 欧美一性一乱一交 | 黄色毛片观看 | 亚洲精品视频在线观看免费视频 | 一区二区精品在线 | 国产一区二区视频在线观看 | 日韩精品在线电影 | 国产乱码精品一区二区三区忘忧草 | 一级黄色片子免费看 | 98久久久| 亚洲高清免费 | 成人国产精品 | 日韩影音| 久久伊人免费视频 | 99这里只有精品视频 | 国产综合亚洲精品一区二 | t66y最新地址一地址二69 | 一区二区三区 在线 |