2016-03-05 86 views
-1

我新手,C#,所以我嘗試下面的程序,這將改變字符串回到新的字符串的方法

public class StringBuilder 
    { 
     public static string ChangeFirstLetterCase(string inputdata) 
     { 
      if(inputdata.Length > 0) 
      { 
       char[] charArray = inputdata.ToCharArray(); 
       charArray[0] = char.IsUpper(charArray[0]) ? 
        char.ToLower(charArray[0]) : char.ToUpper(charArray[0]); 
       //return new string(charArray); 
       return charArray.ToString(); 
      } 
      return inputdata; 
     } 
    } 
class Program 
    { 
     static void Main(string[] args) 
     { 
      var a = StringBuilder.ChangeFirstLetterCase("vishnu"); 
      Console.WriteLine(a); 
      Console.ReadLine(); 
     } 
    } 

的第一個字符的情況下,由於這種方法的返回類型ChangeFirstLetterCase()是一個字符串。所以,我只是在做類似下面

`return charArray.ToString();` 

所以在方法調用它返回的System.Char[]

轉換或者我想下面的一個以及

`return new string(charArray);` 

所以這是回訪值如預期

Argument to the method - "vishnu" 
Return value - "Vishnu" 

所以我的問題在這裏是

  1. 由於該方法的返回類型是字符串,下面的轉換有什麼問題?

    return charArray.ToString();

  2. 我們怎麼知道什麼時候回來作爲新的字符串?

    return new string(charArray);

請給我提供了一些例子

+1

這裏有什麼問題?你似乎知道如何通過'new string(charArray)'將char數組轉換爲字符串。 –

+0

@sriram - 我提到我的問題。你從哪裏不明白? – Aishu

+0

我想知道爲什麼當'System.Text'中存在'StringBuilder'類時,你的類的名字是'StringBuilder'。 https://msdn.microsoft.com/en-us/library/system.text.stringbuilder(v=vs.110).aspx – maniak1982

回答

3

如果返回的字符數組作爲字符串,它會返回你的對象System.Char[]的名稱。這是因爲字符數組的ToString方法不陣列的字符構建爲可用的字符串,但只是使,指出對象的類型的字符串。

但是,如果您使用new String(char[]),它將讀取char數組的內容,以便從char數組中的任何字符中構建一個字符串。所以,你會希望使用new String(char[])對於大多數的串樓,我想不出任何真正的用途爲字符數組上使用ToString()

所以,你的榜樣,你應該使用return new String(charArray);而不是return charArray.ToString();

1

charArray.ToString();返回類型名稱,因爲它是以這種方式實現的,要從字符數組中返回字符串,您將始終必須使用String類構造函數。

ToString方法char[]沒有以字符串文本返回字符數組的方式實現,因此使用String構造函數,就像您在第二種情況下所做的那樣。

1

你可以返回:

if(inputData[0].IsLower()) 
    return string.Concat(inputData[0].ToUpper(), inputData.Substring(1)); 
else 
    return string.Concat(inputData[0].ToLower(), inputData.Substring(1)); 

你的價值就已經是一個可用的字符串,就不需要有一個char []。

我真的不知道你從字符串轉換爲字符數組與正在獲得什麼。