C#实现密码隐藏功能:用等长星号替代原密码字符
解决方案
首先纠正你代码里的一个小问题:Display方法中你写的password是小写,而类的属性是大写的Password,这会导致编译错误,需要改成Password。
针对隐藏密码时输出与字符数对应的星号,有两种简单的实现方式:
方法1:利用string构造函数(最简洁)
C#的string类有一个构造函数可以直接生成重复指定次数的字符,完美匹配你的需求:
public void Display() { if (!Hidden) { Console.WriteLine(Password); } else { // 生成与密码长度相同的星号字符串 Console.WriteLine(new string('*', Password.Length)); } }
方法2:使用foreach循环遍历字符
如果你想用foreach循环实现,也可以逐个添加星号:
public void Display() { if (!Hidden) { Console.WriteLine(Password); } else { string hiddenPassword = ""; foreach (char c in Password) { hiddenPassword += '*'; } Console.WriteLine(hiddenPassword); } }
不过这种方式每次拼接字符串都会生成新的对象,性能不如第一种方法,推荐优先用第一种。
另外,判断布尔值时不需要写== false或== true,直接用!Hidden或Hidden更简洁。
内容的提问来源于stack exchange,提问作者Kageus
相关产品推荐
相关产品推荐

