[英]How can I change these codes to C#.net framework 3.5?
這是.net Framework 4.0的代碼。 但是我們的舊系統使用的是3.5。 升級所有代碼很困難。 我想知道如何將由4.0編寫的代碼更改為3.5代碼。
主要問題是我不知道如何轉換“ return string.Join(“,”,狀態);“ 當我嘗試使用.net framework 3.5進行編譯時發生錯誤。
謝謝!
public enum States
{
....
}
public static string GetStates(uint stateFlags)
{
var stateList = Enum.GetValues(typeof(States));
var states = default(States);
foreach (var state in stateList)
{
if (state == null) continue;
var stateEnum = (States)state;
if (HasState(stateFlags, stateEnum))
{
states = states | stateEnum;
}
}
return string.Join(",", states);
}
錯誤為錯誤。'string.Join(string,string [])'的最佳重載方法匹配具有一些無效的參數
.Net 3.5中的string.Join
僅支持字符串數組,而.Net 4.0具有其他重載以與IEnumerable<string>
或Object[]
。
您應該將一個string[]
傳遞給Join
方法。
有關MSDN文檔的更多信息:
.Net 4: http : //msdn.microsoft.com/en-us/library/dd992421( v = vs.100).aspx
.Net 3.5: http : //msdn.microsoft.com/en-us/library/57a79xd0( v = vs.90).aspx
在.Net 3.5中,用於“ String.Join”的重載不可用。 將您的返回行替換為以下兩行:
string[] stateNames = Enum.GetNames(typeof(States));
return string.Join(",", stateNames);
預期的第二個參數是字符串數組。
這是原始解決方案的略微修改版本
public enum States
{
None = 0,
StateOne = 1,
StateTwo = 2,
StateThree = 4,
StateFour = 8,
};
public static string GetStates(uint stateFlags)
{
var stateList = Enum.GetValues(typeof(States));
List<States> states = new List<States>();
foreach (int state in stateList)
{
if ((stateFlags & state) != 0)
{
states.Add((States)state);
}
}
return string.Join(",", states);
}
跑步
GetStates((uint)(States.StateOne | States.StateTwo))
輸出
StateOne,StateTwo
謝謝大家的熱烈幫助。 我將最后一行更改為以下內容:
var valuesAsList = GetValues(states).Cast<string>().ToList();
return string.Join(",", valuesAsList.ToArray());
並添加了方法:
public static IEnumerable<Enum> GetValues(Enum enumeration)
{
List<Enum> enumerations = new List<Enum>();
foreach (FieldInfo fieldInfo in enumeration.GetType().GetFields(BindingFlags.Static | BindingFlags.Public))
{
enumerations.Add((Enum)fieldInfo.GetValue(enumeration));
}
return enumerations;
}
編譯錯誤消失了,但是我仍然沒有測試代碼以查看與.net 4.0是否相同。
再次感謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.