亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2014年04月16日 11:43:37   作者:  
這篇文章主要介紹了c#入門之枚舉和結構體使用詳解,最后提供了編寫控制臺應用程序接收字符串并做相應處理的小示例,需要的朋友可以參考下

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

復制代碼 代碼如下:

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

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

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

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

復制代碼 代碼如下:

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(創(chuàng)建的結構名) myRoute,再通過 myRoute.屬性 的方式訪問結構中的成員。

數(shù)組

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

復制代碼 代碼如下:

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

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

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

復制代碼 代碼如下:

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

多維數(shù)組分為矩形數(shù)組(多行的每行元素個數(shù)相同)、鋸齒數(shù)組(多行的每行元素個數(shù)不同,并可能存在 {列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數(shù)組:

復制代碼 代碼如下:

char[] myChars = myString.ToCharArray();

還可以使用myString.Length獲取字符串的數(shù)量,使用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]);

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

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

附:習題案例

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

復制代碼 代碼如下:

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);

相關文章

最新評論