我已经能够实现我正在寻找的东西,但只是想知道是否有一个内置方法这样做?
我有一个数字说2665.既然这是一个4位数,我需要一个4位数的最小值,即1000.
同样,如果数字是255,答案将是100.
我试过这个
int len = 2665.ToString().Length;
string str = string.Empty;
for (int index = 0; index < len; index++)
{
if (index == 0)
str += "1";
else
str += "0";
}
Run Code Online (Sandbox Code Playgroud)
这给出了正确的结果1000.但这是否有内置功能?
所以我正在使用Marshal类将非托管结构解析为托管结构.到目前为止,一切都按预期工作,除了我正在努力如何将非托管字符转换为托管枚举类型.
例如:
<StructLayout(LayoutKind.Sequential, Pack:=1)>
Public Structure UnamangedToManaged
<MarshalAs(UnmanagedType.I1)>
Public _Enum As ManagedCustomEnum
end structure
Public Enum ManagedCustomEnum
Value_1
Value_2
Value_3
Value_4
Value_etc
End Enum
Run Code Online (Sandbox Code Playgroud)
这给出了错误: Unvalid combination
如果我只是简单地删除<MarshalAs(UnmanagedType.I1)>然后解析工作除了结构的其余部分的索引关闭,给出无效的值.
尝试了很多可能性,并阅读了所有MSDN文章,但仍然没有运气.
希望有人可以简单地指出我正确的方向.
Private Function StoreCouponCode() As String
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("DBConnectionString").ConnectionString)
Dim sql As New SqlCommand("", con)
Dim sqlGetSlNo As New SqlCommand("SELECT MAX(SlNo) FROM Coupons WHERE CustID=" & Convert.ToInt16(HFCustID.Value) & " AND BusiID=" & Convert.ToInt16(HFBusiID.Value) & " AND OfferID=" & Convert.ToInt16(HFOfferID.Value), con)
Dim sNo, UserID, couponCode, offerCheck As String
Dim slNo As Int16
Try
UserID = getCurrentUserID()
con.Open()
sNo = Convert.ToString(sqlGetSlNo.ExecuteScalar) 'fteches latest serial no for the coupon
If sNo = "" Then
slNo = 0
Else
slNo = Convert.ToInt16(sNo) + …Run Code Online (Sandbox Code Playgroud) 简短版本:正在使用一个类而没有实例化它的类型的变量.怎么样?
我有一个巨大的遗留程序,从VB6转换为VB.net.它正在编译并且许多方面都有效,但是存在与MDI(多文档界面)显示相关的问题.我已将其他测试表单放在父MDI表单下,并且它们正确显示.有问题的表格不会显示.(而且,当然,它是最重要的,也是最复杂的形式.我希望我可以重写它,但是没有可能.)
有一个类MDI1,在许多其他类的代码中使用了7000多次.MDI1类以不显示的形式广泛使用.无论在何处使用MDI1,它总是简称为MDI1或Namespace.MDI1.据我所知,它永远不会被实例化为一个对象.就好像它是一个单身人士,不知何故,但我看不出任何东西使它成为一个.
该类的标题如下:
Option Strict Off
Option Explicit On
Imports VB = Microsoft.VisualBasic
Friend Class MDI1
Inherits System.Windows.Forms.Form
Dim MDI_Activated As Boolean
Public Sub New()
MyBase.New()
InitializeComponent_Renamed()
End Sub
...
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这里会发生什么?
我尝试通过右键单击并选择"转到定义"来检查Visual Studio的每个地方都会带我回到类定义(上面代码的第4行),而不是类型的变量MDI1.我搜索了整个源代码(使用Visual Studio和Visual Studio外部的grepwin),并且找不到使用MDI1类型实例化的变量.
我不明白对类的调用是如何工作的,没有该类型的变量.
非常感谢帮助.
我正在使用Visual Studio 2010 Professional,这是我可以访问的最新版本.
我正在审查第三方外包公司提供给我们的一些代码并碰到了这个小宝石:
try
{
int i = strOriginalData.IndexOf("\r\n");
////System.Diagnostics..EventLog.WriteEntry("i", i.ToString());
}
catch (System.Exception ex)
{
////System.Diagnostics..EventLog.WriteEntry("ex", ex.Message);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是编译器会完全优化出来吗?当我在Reflector中查看已编译的程序集时,它显示了以下内容:
try
{
i = this.strOriginalData.IndexOf("\r\n");
}
catch (Exception exception1)
{
ex = exception1;
}
Run Code Online (Sandbox Code Playgroud)
i的声明已移至方法的顶部,而Exception类型的附加声明也位于方法的顶部.
所以,由于这段代码没有真正做任何事情,我想知道编译器是否足够聪明,看到这段代码什么也不做,可以优化它.
我今天早上在一些VB6代码中遇到了一个错误,但没有正确评估.代码采用以下格式:
<Boolean Value 1> Or <Boolean Value 2> And <Boolean Value 3>
Run Code Online (Sandbox Code Playgroud)
修复(在这种情况下)是将括号括起来如下:
(<Boolean Value 1> Or <Boolean Value 2>) And <Boolean Value 3>
Run Code Online (Sandbox Code Playgroud)
因为And首先被错误地评估所以我的问题是 - 这总是这样吗?
我有一个包含黑白图像的结构:
public class Img
{
public int height;
public int width;
public byte[] matrix;
}
Run Code Online (Sandbox Code Playgroud)
矩阵中包含的值为0或255.
使用C#WPF在组件中显示此图像的最佳方法是什么?
我试过这个:
XAML:
<Image Grid.Row="0"
Stretch="Uniform"
Source="{Binding Picture, Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"/>
Run Code Online (Sandbox Code Playgroud)
C#:
public BitmapImage Picture
{
get
{
return _picture;
}
private set
{
_picture = value;
OnPropertyChanged("Picture");
}
}
public void Generate()
{
Img img = CreateImg();
Picture = LoadImage(img.width, img.height, img.matrix);
}
private BitmapImage LoadImage(int w, int h, byte[] imageData)
{
using (MemoryStream memory = new MemoryStream(imageData))
{
memory.Position = 0;
BitmapImage bitmapimage = …Run Code Online (Sandbox Code Playgroud) 哪一个更好?在类中声明成员变量或返回方法的参数?性能方面哪一个更好.
class A{
//Declaring member variable
private string name;
private int age;
private method Display()
{
Passing();
Console.Write("{0}-{1}",name,age);
}
private void Passing()
{
name = "Hello World";
age = 21;
}
}
Run Code Online (Sandbox Code Playgroud)
要么
class A{
//out parameter implementation
private method Display()
{
string name= string.Empty;
int age = 0;
Passing(out name,out age);
Console.Write("{0}-{1}",name,age);
}
private void Passing(out string name,out int age)
{
name = "Hello World";
age = 21;
}
}
Run Code Online (Sandbox Code Playgroud) 场景:我即将实现一个缓存功能,我想在其中缓存我从Web服务收到的序列化对象树.序列化对象以byte []形式出现,我基本上只想创建一个我想要存储的第二个字节[],以防我想要恢复原始数据而无需再次查询Web服务.
问题:如果我使用一个简单的循环将源字节[]复制到目标字节[]中,例如:
for (int i = 0; i < source.Length - 1; i++)
target[i] = source[i];
Run Code Online (Sandbox Code Playgroud)
那么BinaryFormatter无法反序列化新的byte [].例外说:
二进制流'0'不包含有效的BinaryHeader.可能的原因是序列化和反序列化之间的无效流或对象版本更改.
但是如果我使用Buffer.BlockCopy()或Array.CopyTo()复制数组,则BinaryFormatter对复制的byte []进行反序列化没有问题.
所以我的问题是,是否有人知道为什么以及如何在循环中复制该数组与使用这些函数不同?在第一种方法中,该字节[]究竟缺少了什么?
这是我的脚本来控制我的镜头的运动..但我得到错误:
错误CS0165:使用未分配的局部变量`floorHit'
我该如何解决?
void Start(){
floor = LayerMask.GetMask ("Floor");
Ray RAY = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit floorHit;
Vector3 playerMouse = floorHit.point - transform.position;
playerMouse.y = 0f;
MoveTo (playerMouse.x, playerMouse.z);
}
Run Code Online (Sandbox Code Playgroud) 我收到了两个文件:Sumator.cs和Kalkulator.cs @ Visual Studio 2012
我认为你不需要看到这两个,但我确实把它们放在了这里,下到页面检查我的问题.
Sumator.cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sumator2
{
class Sumator
{
bool Status = false;
double Suma = 0;
public Kalkulator Kalk = new Kalkulator();
public Sumator()
{
}
public void ZmienStatus()
{
Status = !Status;
}
public string PokazStatus()
{
if (Status == true)
return " Sumator w??czony";
else
return " Sumator wy?aczony";
}
public void PokazWynikS()
{
if (Status == true)
Suma += Kalk.Wynik;
Console.WriteLine("Wynik …Run Code Online (Sandbox Code Playgroud)