小编Jon*_*s W的帖子

FileStream 在 try and catch 中,关闭读取器有多重要?

当出现异常时,我想确保在创建阅读器后关闭阅读器。所以我想在这个 try and catch 中包含一个 finally 括号。但是我不能在 finally 括号中关闭它,除非我在 try 括号上方声明了读者。但是如果我这样做了,我在创建阅读器时就不会捕捉到任何异常。我不确定是否关闭读者有多重要。

XmlSerializer xmlSr = new XmlSerializer(typeof(List<ProjectObject>));
try
{
    FileStream reader = new FileStream(mTextFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
    List<ProjectObject> addProjects = (List<ProjectObject>)xmlSr.Deserialize(reader);
    mSharedDriveLocalProjects = addProjects;
    reader.Close();
}
catch
{
    MessageBox.Show("Failed to load XML file");
}
Run Code Online (Sandbox Code Playgroud)

以上是我的代码。用这种方式更好吗?

XmlSerializer xmlSr = new XmlSerializer(typeof(List<ProjectObject>));
FileStream reader = new FileStream(mTextFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
try
{
    List<ProjectObject> addProjects = (List<ProjectObject>)xmlSr.Deserialize(reader);
    mSharedDriveLocalProjects = addProjects;
}
catch
{
    MessageBox.Show("Failed to load XML file");
}
finally
{
    reader.Close();
}
Run Code Online (Sandbox Code Playgroud)

c# try-catch

1
推荐指数
1
解决办法
1600
查看次数

随机字符串生成器C#

我做了一个简单的数字生成器,我有一个问题:生成器是否可以弹出"红色","蓝色","绿色","黄色"和"白色"而不是数字1-5?

namespace zufallsgenerator
{
    public partial class Form1 : Form
    {
        Random r = new Random();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btnWhlie_Click(object sender, EventArgs e)
        {
            int summe = 0, z; 

            lblAnzeige.Text = " ";

           while (summe <= 0)
           {
                z = r.Next(1, 6);
                summe = summe + z;
           }
           lblAnzeige.Text += summe + "\n";               
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# string random generator

0
推荐指数
1
解决办法
357
查看次数

如何从字典中获取对象成员的值

我有一本字典

Dictionary<int, UserSession> UserSessionLookupTable

class UserSession 
{ 
    public int SessionId { get; set; } 
    public string UserName { get; set; } 
    public Guid SessionGuid { get; set; } 
    public DateTime LoginTime { get; set; } 
} 
Run Code Online (Sandbox Code Playgroud)

如何key=1从c#中的字典中检索值sessionGuid

c#

0
推荐指数
1
解决办法
330
查看次数

将空的IEnumerable <>传递给构造函数

根据数据库中的当前内容,会发生两件事.

  1. 如果表buildingDefine不为空,则将此表传递给构造函数.

  2. 否则将buildingDefine传递给构造函数.

这是我对数据库的检查:

        //Is there content in buildingDefineTable?
if (!_bDefine.Any())
{
    int currentBuildingId = ((BuildingTable)((ListView)sender).SelectedItem).Id;

    var currentBool = from bla in _building
                        where bla.Id == currentBuildingId
                        select bla.BuildingBool;

    //Is the buildingBool false? 
    if (!currentBool.First())
    {
        var currentBuildingDefine = from BuildingDefineTable in _bDefine
                                                    where BuildingDefineTable.buildingId == ((BuildingTable)((ListView)sender).SelectedItem).Id
                                                    select BuildingDefineTable;


        await Navigation.PushAsync(new DefineBuilding(currentBuildingDefine));
    }    
    else
    {
        //Do something here. 
    }           

}
//No content in buildingDefineTable
else
{
    await Navigation.PushAsync(new DefineBuilding(new IEnumerable<_bDefine> bDefineTable ));
}
Run Code Online (Sandbox Code Playgroud)

if语句工作正常,但是每当数据库不包含表中的任何信息时,我都无法传递表的空列表.

这是我的构造函数:

public DefineBuilding(IEnumerable<BuildingDefineTable> bDefineTable)
{
    if …
Run Code Online (Sandbox Code Playgroud)

.net c# linq

0
推荐指数
1
解决办法
244
查看次数

无法转换类型为"<SelectManyIterator>"的对象以键入"System.Collections.Generic.List"

我需要从列表中选择特定的两列,并为两个组合框加载这些值.我试图使用LINQ这样做,它传递给我一个错误"无法将类型的对象强制转换为'类型'System.Collections.Generic.List".

这是我的方法,

private void getVehicleNo()
{
    List<Exp_VehicleDTO> oData = oVehicleBL.VehiclesSearch(Convert.ToInt32(Session["CompanyID"].ToString()));
    oData = ((List<Exp_VehicleDTO>)oData.SelectMany(x => x.VehicleNo)).ToList();
    ddVehicleNo.DataSource = oData;
    ddVehicleNo.DataBind();
}
Run Code Online (Sandbox Code Playgroud)

这是车辆搜索方法,

public List<Exp_VehicleDTO> VehiclesSearch(int companyId)
{
    List<Exp_VehicleDTO> results = new List<Exp_VehicleDTO>();
    try
    {
        using (CloudConnection oCloudConnection = new CloudConnection(DMSSWE.Common.ConnectionString))
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(" SELECT ");
            sb.AppendLine("CompanyID,");
            sb.AppendLine("VehicleId,");
            sb.AppendLine("VehicleType,");
            sb.AppendLine("VehicleNo,");
            sb.AppendLine("Status,");
            sb.AppendLine("CreatedDateTime,");
            sb.AppendLine("CreatedBy,");
            sb.AppendLine("CreatedMachine ");
            sb.AppendLine(" FROM Exp_CompanyVehicle ");
            sb.AppendLine(" WHERE 1=1 ");
            sb.AppendLine(" AND (CompanyID=?CompanyID)");

            oCloudConnection.CommandText = sb.ToString();
            oCloudConnection.Parameters.Clear();
            oCloudConnection.Parameters.Add(new Parameter { Name = "CompanyID", Value = …
Run Code Online (Sandbox Code Playgroud)

c# linq

0
推荐指数
1
解决办法
407
查看次数

C# double 值返回 NaN

我在这里有这个代码:

public double ProgressBar
{
    get
    {
        return ((double)Completed / Progress);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当两个值(已完成和进度)都为 0 时,它总是返回 NaN。

我也试过:

public double ProgressBar
{
    get
    {
        return ((double)Completed / (double)Progress);
    }
}
Run Code Online (Sandbox Code Playgroud)

相同的结果 NaN

我究竟做错了什么?

c#

-3
推荐指数
1
解决办法
80
查看次数

标签 统计

c# ×6

linq ×2

.net ×1

generator ×1

random ×1

string ×1

try-catch ×1