ser*_*hio 20 .net c# arrays .net-2.0
.NET 2
string[] myStrings = GetMyStrings();
string test = "testValue";
Run Code Online (Sandbox Code Playgroud)
如何验证是否myStrings包含test?
jas*_*son 19
在.NET 2.0中,如果需要索引,可以执行以下操作:
int index = Array.FindIndex(
myStrings,
delegate(string s) { return s.Equals(test); }
);
Run Code Online (Sandbox Code Playgroud)
index将是-1如果myStrings不包含test.
如果您只想检查是否存在:
bool exists = Array.Exists(
myStrings,
delegate(string s) { return s.Equals(test); }
);
Run Code Online (Sandbox Code Playgroud)
old*_*bam 11
我在页面http://www.dotnettoad.com/index.php?/archives/10-Array.Contains.html找到了一个优雅的答案.你在.NET 2.0中要做的就是转换为IList并调用Contains方法.
(IList<string> mystrings).Contains(test);
Run Code Online (Sandbox Code Playgroud)
Ahm*_*eed 10
这是一个符合.NET 2.0的方法.Array.Find如果找不到值,则使用将返回null.
C#方法
string[] myStrings = { "A", "B", "testValue" };
string test = "testValue";
string result = Array.Find(myStrings, delegate(string s) { return s == test; });
Console.WriteLine("Result: " + result);
Run Code Online (Sandbox Code Playgroud)
如果需要不区分大小写的匹配使用s.Equals(test, StringComparison.InvariantCultureIgnoreCase).
编辑:使用VB.NET 2.0需要更多的努力,因为它不支持匿名委托.相反,您需要添加一个Function并使用AddressOf指向它.您需要将其设置testValue为成员或属性,因为它不会传递给谓词方法.在下面的例子中我使用Array.Exists.
VB.NET方法
' field or property '
Dim test As String = "testValue"
Sub Main
Dim myStrings As String() = { "A", "B", "testValue" }
Dim result As Boolean = Array.Exists(myStrings, AddressOf ContainsValue)
Console.WriteLine(result)
End Sub
' Predicate method '
Private Function ContainsValue(s As String) As Boolean
Return s = test
End Function
Run Code Online (Sandbox Code Playgroud)
您可以使用List来代替使用静态数组:
List<string> myStrings = new List<string>(GetMyStrings());
if(myStrings.Contains("testValue"))
{
// Do Work
}
Run Code Online (Sandbox Code Playgroud)
小智 7
以为我会添加另一个混合,首先在.NET 3.5中提供,我相信:
Enumerable.Contains(myStrings.ToArray(), test)
Run Code Online (Sandbox Code Playgroud)
bool ContainsString(string[] arr, string testval)
{
if ( arr == null )
return false;
for ( int i = arr.Length-1; i >= 0; i-- )
if ( arr[i] == testval )
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
这将是有史以来最好的表现。:P
| 归档时间: |
|
| 查看次数: |
52518 次 |
| 最近记录: |