本文仅用于记录开发过程中使用的一些方法和技巧等。
未来会不断编辑。
一、选择文件存储的路径
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
fbd.Description = "选择保存文件夹";
if (fbd.ShowDialog() != DialogResult.OK)
return;
Console.WriteLine($"选中的路径:{fbd.SelectedPath}");
}
二、byte[]的打印方法
- 转为16进制
BitConverter.ToString(data)
- 转为字符串
如果data是字符串,比如ASCII码
Encoding.UTF8.GetString(data)
- 逐字节打印
foreach (var b in data)
{
Console.Write($"{b:X2} ");
}
Console.WriteLine();
三、字典缓存
// 类级别变量
private Dictionary<string, W2DeviceControl> deviceDict = new Dictionary<string, W2DeviceControl>();
// 函数A中
foreach (var e in emgList)
{
W2DeviceControl w2DeviceControl = new W2DeviceControl();
w2DeviceControl.rtLabelW2Name.Text = e.deviceName;
// ... 其他初始化代码
// ⭐ 添加到字典
deviceDict[e.deviceName] = w2DeviceControl;
flowLayoutPanelW2.Controls.Add(w2DeviceControl);
}
// 函数B中 - 直接通过字典查找并修改
if (deviceDict.TryGetValue(nameTxt, out var w2DeviceControl))
{
w2DeviceControl.labelEle.Text = $"· {newEleValue}%";
// 只修改电量,不影响其他UI
}
四、整数相除得到小数
这里我真的踩坑了!我想计算113/1263,然后得到一个小数,怎么算都是0,因为我没有进行类型转换!!!
在C#中,两个整数相除时,默认情况下会得到一个整数结果,即使实际结果是一个带小数点的数值。为了得到带小数点的结果,可以使用以下几种方法:
- 使用浮点数类型
将其中一个或两个整数转换为浮点数类型(如float或double),然后进行除法运算。例如:
int itemp = 3706; // 实际值37.06℃
int iNum = 100;
float ftemp = (float)itemp / iNum;
Console.WriteLine(ftemp); // 输出:37.06
// 或者:
int itemp = 3706; // 实际值37.06℃
int iNum = 100;
float ftemp = itemp * 1.0f / iNum;
Console.WriteLine(ftemp); // 输出:37.06
- 使用Convert.ToDouble方法
将整数转换为double类型,然后进行除法运算。例如:
int itemp = 3706; // 实际值37.06℃
int iNum = 100;
double dtemp = Convert.ToDouble(itemp) / Convert.ToDouble(iNum);
Console.WriteLine(dtemp); // 输出:37.06
- 保留指定小数位数
如果需要保留特定的小数位数,可以使用Math.Round方法。例如,保留两位小数:
int a = 12345;
int b = 100;
double result = Math.Round((double)a / b, 2);
Console.WriteLine(result); // 输出:123.45
1587

被折叠的 条评论
为什么被折叠?



