簡體   English   中英

從VB轉換為C#進行循環

[英]Translate from VB to C# for loop

我使用了一個流行的在線代碼轉換器,將其從VB轉換為C#,而C#對此for循環不起作用。 任何C#專家都能看到問題嗎?

更具體地說,intellisense告訴我不能像方法一樣使用CustomerRoles() 在VB中工作正常。

VB:

 Dim Roles As New List(Of String)
 For x As Integer = 0 To EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles().Count - 1
     Roles.Add(EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles(x).Name)
     ddlRoles.Items.Add(EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles(x).Name)
 Next

C#(這不起作用):

List<string> Roles = new List<string>();
for (int x = 0; x <= EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.CustomerRoles().Count - 1; x++) {
  Roles.Add(EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.CustomerRoles(x).Name);
  ddlRoles.Items.Add(EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.CustomerRoles(x).Name);
}

更換

CustomerRoles(x).Name

CustomerRoles[x].Name

您可以使用方括號而不是C#中的括號訪問數組(或列表)的索引器。

如果它不是一個集合,而是一個屬性或字段,則只需要刪除該括號即可:

CustomerRoles.Name

如果由於某種原因這不起作用,您可以嘗試Enumerable.ElementAt

CustomerRoles.ElementAt(x).Name

即使它不實現IList<T> (索引器需要),它也可以與任何IEnumerable<T>

嘗試這個:

C#(this is not working)
List<string> Roles = new List<string>();
for (int x = 0; x <= EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.CustomerRoles.Count - 1; x++) {
    Roles.Add(EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.CustomerRoles[x].Name);
    ddlRoles.Items.Add(EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.CustomerRoles[x].Name);
}

好的,我在VB中嘗試過CustomerRoles(x)等同於CustomerRoles.ElementAtOrDefault(x); 在C#中。

暫無
暫無

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

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