將一些代碼從一個控制器複製到另一個控制器。這兩個文件都有相同的使用語句,但它不會爲我解決這個問題。爲什麼不能訪問.TrimSafe?
在我的第一個文件address.Name.Value = source.Name.TrimSafe();
是好的,但在我的第二個文件。 .TrimSafe標記爲不存在 從telescense我可以選擇修剪,trimEnd或trimStart哪裏有trimSafe去了,爲什麼我不能使用它?
將一些代碼從一個控制器複製到另一個控制器。這兩個文件都有相同的使用語句,但它不會爲我解決這個問題。爲什麼不能訪問.TrimSafe?
在我的第一個文件address.Name.Value = source.Name.TrimSafe();
是好的,但在我的第二個文件。 .TrimSafe標記爲不存在 從telescense我可以選擇修剪,trimEnd或trimStart哪裏有trimSafe去了,爲什麼我不能使用它?
這聽起來像一個命名空間問題給我。
考慮一下:
// In some file somewhere
namespace firstNamespace
{
Class MyString : String
{
public static TrimSafe() {}
}
}
// The first file you copied from
namespace firstNamespace
{
public void foo() { TrimSafe(); } // Works!
}
namespace secondNamespace
{
public void fee() { TrimSafe(); } // Nope :(
}
要解決的最後一個,你需要在與其他using語句頂部添加using firstNamespace;
。原因是你從第一個文件拷貝到TrimSafe所在的同一個命名空間。
在C++中,您通常使用#include
所有引用的.h文件。
在C#中,您不會爲類添加using
語句,而是爲名稱空間添加語句。您只需要名稱空間爲using
,並且該名稱空間內的所有內容都伴隨着它。在命名空間xyz
中定義的任何內容都可以在命名空間xyz
中定義其他所有內容,而不必爲每個類設置using
。
您的第二個文件位於不同的命名空間中,因此它不知道第一個命名空間中的內容,因此它看不到TrimSafe。
無論如何,這是我的猜測。
看起來很熟悉,我想你是做果園網上商店教程以及:) 您需要在您的項目稱爲助手添加文件夾,它應該有這個類是:
public static class StringExtensions {
public static string TrimSafe(this string s) {
return s == null ? string.Empty : s.Trim();
}
}
只需包含需要您的方法的名稱空間。
這兩個文件是否使用相同的命名空間? – Shaz
不,但它們應該不同 – John
查看第一個文件中的「使用」指令列表,並將它們與第二個文件進行比較。 TrimSafe()可能是未在第二個文件中導入的擴展方法。 –