小编Mon*_*Zhu的帖子

编译器错误消息:CS0029:无法将类型“int”隐式转换为“string”

我需要将表数据库输入的字符串转换为 C# .NET 4 中的整数值,并尝试了受此链接启发的代码:

    int i;
    string Entry_Level = Convert.ToInt32("2,45");
    i = Convert.ToInt32(Entry_Level); 
Run Code Online (Sandbox Code Playgroud)

但我有这个错误:

编译器错误消息:CS0029:无法将类型“int”隐式转换为“string”

编辑

解决方法:

    decimal i;
    string Entry_Level = "2,45";
    i = Convert.ToDecimal(Entry_Level);

    Response.Write(i.ToString());
    Response.End();
Run Code Online (Sandbox Code Playgroud)

输出结果是 2,45,非常感谢!

c#

3
推荐指数
1
解决办法
12万
查看次数

如何打印Windows窗体而不显示/显示它

我试图自动打印一系列Windows窗体.我不需要展示它们.我在互联网上找到的代码示例仅在我显示表单时才有效show()!我需要用数据初始化表单并将其发送到打印机这是我正在使用的代码:

public partial class Form2_withoutShow : Form{

     PrintDocument PrintDoc;

     Bitmap memImage;

     public Form2_withoutShow (Data data)
     {

        InitializeComponent();

        /*
           Initialize Data (texboxes, charts ect.) here
       */

        this.PrintDoc = new PrintDocument();
        this.PrintDoc.PrintPage += PrintDoc_PrintPage;
        this.PrintDoc.DefaultPageSettings.Landscape = true;
     }


     public void Print()
     {
        this.PrintDoc.Print();
     }

     void PrintDoc_PrintPage(object sender, PrintPageEventArgs e)
     {

        int x = SystemInformation.WorkingArea.X;
        int y = SystemInformation.WorkingArea.Y;
        int width = this.Width;
        int height = this.Height; 

        Rectangle bounds = new Rectangle(x, y, width, height);

        Bitmap img = new Bitmap(width, height); …
Run Code Online (Sandbox Code Playgroud)

c# printing winforms

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

如何设置串口流量控制?

我有一个SerialPort流量控制设置为1.如何在c#中设置它.char我的端口设置中有换行符,我认为与流量控制不同.到目前为止我的端口设置如下.有人可以帮我设置流量控制吗?谢谢.

SerialPort _comm = new SerialPort
{
    PortName = string.Concat("COM", comPort),
    BaudRate = 9600,
    Parity = Parity.None,
    DataBits = 8,
    StopBits = StopBits.One,
    ReadTimeout = 1000,
    WriteTimeout = 5000,
    NewLine = "\r"
};
Run Code Online (Sandbox Code Playgroud)

c# serial-port

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

发生OutOfMemoryException时?

考虑以下代码:

string value = new string('a', int.MaxValue);
Run Code Online (Sandbox Code Playgroud)

当我们运行该代码时发生OutOfMemoryException.Windows 8中的物理内存限制为128 GB.

那么为什么.Net会抛出OutOfMemoryException那些代码呢?

此代码也从不抛出OutOfMemoryException:

List<string> list = new List<string>();
for (int i = 0; i < 100000000000; i++)
{
    list.Add(new string('a', 100 ));
}
Run Code Online (Sandbox Code Playgroud)

我在64位模式下运行它.

c# memory-management

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

C#String安全替换

你有什么想法或提示如何安全地更换字符串?

例:

string Example = "OK OR LOK";
Run Code Online (Sandbox Code Playgroud)

现在我想用true替换"OK",用false替换"LOK".

Example = Example.Replace("OK", "true");
Example = Example.Replace("LOK", "false");
Run Code Online (Sandbox Code Playgroud)

现在的结果是: Example = "true or Ltrue";

结果应该是: Example ="true or false";

我理解这个问题,但我不知道如何解决这个问题.

谢谢

c# string replace

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

在c#中显示从1到100的数字,使每行以模数10结束

我是初学者学习c#,我有这个代码

static void Main(string[] args)
{
    int a = 0;
    while (a < 100)
    {
        a = a + 1;
        if ((a % 10) == 0)
        {
            Console.WriteLine(a);
        }
        else
        {               
            Console.Write(a);
            Console.Write(",");  
        }                
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来编写这段代码?我觉得在c#中可能有更好的方法.这是我的第一个代码.我将不胜感激.谢谢

c#

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

System.InvalidCastException Double to String

以下代码打开Excel电子表格并逐个单元格地浏览它.该Console.WriteLine调用用于检查它是否正常工作.

xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(@"\Extracts\Test.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

range = xlWorkSheet.UsedRange;
rw = range.Rows.Count;
cl = range.Columns.Count;

for (rCnt = 1; rCnt <= rw; rCnt++)
{
    for (cCnt = 1; cCnt <= cl; cCnt++)
    {
        string str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;
        Console.WriteLine("Row:", str.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

System.InvalidCastException'无法将类型为'System.Double'的对象强制转换为'System.String'.'

这是指行:

string str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;
Run Code Online (Sandbox Code Playgroud)

我知道有另一个问题有相同的错误,但该解决方案在这种情况下似乎不起作用.

感谢谢谢.

c# excel casting

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

使用成员函数启动线程

我最近遇到过这样一段代码(这里是简化版,我检查了它并且它有效):

using System;
using System.Threading;

namespace Rextester
{
    public class Program
    {
        public class Foo
        {
            public Foo()
            {
                thread = new Thread(new ThreadStart(Loop));
            }

            private void Loop()
            {
            }

            private Thread thread;
        }
        public static void Main(string[] args)
        {
            var foo = new Foo();
            Console.WriteLine("How does it work??");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么这些代码在没有编译器抱怨的情况下工作?据我所知,Thread应该从应该是静态的函数开始.(无论如何都应该传递对象和成员函数的引用).但在这里我看到只传递成员函数的引用.好像我错过了c#中的大事.可能有隐含的传递this参考方式?

UPD:非常感谢.我只是想补充一点这个事实.事实证明,编译器会自动处理委托(传递正确的引用对象和方法).这是il代码:

.method public hidebysig specialname rtspecialname 
        instance void  .ctor() cil managed
{
  // Code size       32 (0x20)
  .maxstack  8
  IL_0000:  ldarg.0
  IL_0001:  call       instance …
Run Code Online (Sandbox Code Playgroud)

c# multithreading delegates

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

具有多个值的枚举

在我的模型中我有这个代码

public enum StockStatus
{       
    Origin= 1,

    [Display(Name = "In Transit")]
    InTransit = 5,
    [Display(Name = "Port Louis")]
    PortLouis = 6,
    Yard = 7,
    Requested = 8
}
Run Code Online (Sandbox Code Playgroud)

我需要能够为 Origin 提供多个值,如下所示

public enum StockStatus
{       
    Origin= 1,2,3,4,        

    [Display(Name = "In Transit")]
    InTransit = 5,
    [Display(Name = "Port Louis")]
    PortLouis = 6,
    Yard = 7,
    Requested = 8
}
Run Code Online (Sandbox Code Playgroud)

我知道这样不行,但我需要能够这样做

c# enums

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

等待的任务可以在 IsCompleted 中返回 false

我找到了这段代码:

Task task = DoSomethingAsync( someObject );
await task.ConfigureAwait( false );
if ( task.IsCompleted ){ ... }
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以安全地将其替换为

await DoSomethingAsync( someObject ).ConfigureAwait( false );
Run Code Online (Sandbox Code Playgroud)

并删除 if 子句。

我的问题:task.IsCompleted当等待的任务返回时,可能会出现错误吗?

IsCompleted 的文档告诉我们:

true如果任务已完成(即任务处于三种最终状态之一:RanToCompletion、Faulted 或 Canceled);否则,false

我查找了可能的状态,但我仍然不清楚当等待的任务返回时哪些状态是可能的。

请帮助我阐明这个问题。提前谢谢。

c# task async-await

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