這似乎是一個相當簡單的問題,但我很難找到一個明確的答案。目前,我有一個公共類,並在構造函數中,我定義這樣一個變量:隱藏變量在視覺c#公共類
private String password = "abcd123456";
然後,我有這樣的方法:
public String getValue(String inputValue)
{
String returnValue = encryptor.decrypt(inputValue, password);
return returnValue;
}
的類定義爲公衆好。當我從一個形式引用這個類,我這樣做:
ValueGetter vg = new ValueGetter();
String decryptedValue = vg.getValue("xfr3sf342d#2");
我認爲,通過定義密碼爲私有,只有類能夠看到它。但是,如果我在調試中,將鼠標懸停在「vg」變量上以查看對象的內容後,我可以看到密碼清晰明瞭。有沒有辦法讓變量密碼只爲該類所知,但仍然在構造函數中定義?使用該變量的類中會有幾個方法可以從外部窗體調用,所以我寧願在構造函數中使用它,而不必在每個方法中重新定義變量。
在此先感謝!
我使用密碼作爲隱藏變量的最顯而易見的原因,但實際上,我不想讓某人爲類寫一個接口,並得到一堆並不意味着的垃圾任何對他們退出對象的東西。所以我可能會有一個名爲beach的類和一個名爲getBeachBall的方法。它返回給我一個橙色的沙灘球,充滿了xx磅的空氣等。在包含該方法的類中,我有另一個名爲TableShape的變量。這種顏色將永遠是白色的,不可更改。我只是想知道tableShape是否可以被屏蔽,因爲只有Beach類纔會使用它。原來的調用者永遠不會知道任何關於tableColor變量的信息。
不要在代碼中存儲密碼。 –
密碼是私有的,因此只在ValueGetter內部可見。您只能看到調試器的密碼值,因爲調試器允許您查看私有成員。嘗試從表單中引用ValueGetter.password,您將看到它無法訪問。 – Maciej
@Maciej它仍然不以任何方式阻止從惡意用戶訪問它。你可以通過反射訪問它,反編譯代碼,傾銷和檢查內存等。 – Servy