0

私はこの同じコードを2か所に持っています:

if (amountUnit.ToLower().Contains("x"))
{
    string[] amount = amountUnit.Split('x');
    x = amount[0].Trim();
    y = amount[1].Trim();
}
else
{
    x = "1";
    y = amountUnit.Trim();
}
//
unit = textInBrackets.Replace(amountUnit, "");
name = "";
for (int z = 0; z < i; z++)
{
    name += someArray[z];
    name += " ";
}
name = name.Trim();

正確なコードが 2 回繰り返されます。修正方法は?新しいメソッドで抽出すると、多くの ref 入力パラメーターができます。別の方法はありますか?無理ならコメントまでの部分だけ?

4

4 に答える 4

0

お気に入り:

public struct Parameters
{
    public int X {get; set;}
    public int Y {get; set;}
}

public Parameters ExtractParameters(string amountUnit)
{    
    var parameters = new Parameters();
    if (amountUnit.ToLower().Contains("x"))
    {
        string[] amount = amountUnit.Split('x');
        parameters.X = int.Parse(amount[0].Trim());
        parameters.Y = int.Parse(amount[1].Trim());
    }
    else
    {
        parameters.X = 1;
        parameters.Y = int.Parse(amountUnit.Trim());
    }
    return parameters;
} 

使用法:

var parameters = ExtractParameters(amountUnit);
var x = parameters.X;
var y = parameters.Y; 

文字列の拡張メソッドにすることもできます。もちろん、例外処理も追加するのが最善です。

于 2013-04-08T12:05:16.743 に答える
0

あまり動的なものが必要ない場合は、それを 2 つのメソッドに分割して、次のような単純なことを行うのはどうでしょうか。

public static string GetX(string amountUnit)
{
    return amountUnit.ToLower().Contains("x") ? 
                        amountUnit.Split('x')[0].Trim() : 
                        "1";
}

public static string GetY(string amountUnit)
{
    return amountUnit.ToLower().Contains("x") ? 
                        amountUnit.Split('x')[1].Trim() :       
                        amountUnit.Trim();
}
于 2013-04-08T12:08:25.067 に答える
0

コードとデータをクラスに結合します;-)

public class Point
{
    public Point(string amountUnit)
    {
        if (amountUnit == null)
        {
            throw new ArgumentNullException("amountUnit");
        }

        if (amountUnit.ToLower().Contains("x"))
        {
            string[] amount = amountUnit.Split('x');
            this.X = amount[0].Trim();
            this.Y = amount[1].Trim();
        }
        else
        {
            this.X = "1";
            this.Y = amountUnit.Trim();
        }
    }

    string X { get; private set; }
    string Y { get; private set; }
}
于 2013-04-08T12:00:07.730 に答える