簡體   English   中英

C#String.Format args

[英]C# String.Format args

我有這樣一個數組:

object[] args

並且需要在字符串中插入這些args,例如:

str = String.Format("Her name is {0} and she's {1} years old", args);

代替:

str = String.Format("Her name is {0} and she's {1} years old", args[0], args[1]);

注意:實際上第一行代碼工作正常! 但args [1]失蹤了! 對不起,謝謝。 每一個點:)

如果數組args中至少有兩個對象,那么您的第一個示例應該可以正常工作。

object[] args = new object[] { "Alice", 2 };
str = String.Format("Her name is {0} and she's {1} years old", args);

它應該按照你想要的方式工作。 String類具有以下Format方法定義:

public static string Format(string format, params object[] args);

看看你的例子中的“args”是一個對象數組,它應該適合。

如果您不知道arguments數組中有多少個數組元素,請嘗試使用string.Join()。

string.Format("Arguments passed in to the program are: {0}", string.Join(" ", args));

特別是在你的例子中:

string.Format("Her name is {0} years old", string.Join(" and she's ", args));

就個人而言,我不喜歡數組對象的硬編碼結構。 這在整個應用程序中都要記住太多,並且難以維護。 我寧願將參數轉換為帶有接受數組的構造函數的“Person”對象,並重載ToString()以顯示有關對象成員的特定信息。

class Person
{
    private string m_sName;
    private string m_sAge;

    public Person(string[] args)
    {
        m_sName = args[0];
        m_sAge = args[1];
    }

    public override string ToString()
    {
        return string.Format("Her name is {0} and she's {1} years old.", m_sName, m_sAge);
    }
}

因此,您可以構造一個“Person”對象並在調用時顯示該消息。

var oNewPerson = new Person(args);
console.WriteLine(oNewPerson.ToString());

這與Microsoft示例非常相似:

http://msdn.microsoft.com/en-us/library/ms173154(v=vs.80).aspx

我不確定你在問什么,但考慮到String.Format()函數的一個簽名是

Public Shared Function Format(ByVal format As String, ByVal ParamArray args() As Object) As String

我從Visual Studio中復制了更多垃圾:

摘要:使用與指定數組中相應System.Object實例的值等效的文本替換指定System.String中的格式項。

參數: format:復合格式字符串。 args:包含零個或多個要格式化的對象的System.Object數組。

返回值:格式的副本,其中格式項已替換為args中System.Object的相應實例的System.String等效項。

異常: System.ArgumentNullException:format或args為null。 System.FormatException:格式無效。 - 或 - 指示格式參數的數字小於零,或大於或等於args數組的長度。

- 在VB上哎呀,但你明白了。

str = String.Format("Her name is {0} and she's {1} years old", args);

當args是object []類型時應該工作。

你的例子都做同樣的事情 - String.Format有一個重載,它接受一個對象[],而不是分別指定每個參數。

你的第二個代碼塊會做我認為你想要完成的事情。

string.Format("Hello {0}, {1} and {2}", new object[] { "World", "Foo", "Bar" });

你有沒有試過第一線? 你有沒有看到它應該和第二個一樣?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM