小编Kam*_*ski的帖子

铸造和胁迫有什么区别?

我已经看到这两个术语在各种在线解释中几乎可以互换使用,我咨询过的大多数教科书也不完全清楚这种区别.

是否有一种清晰而简单的方式来解释你们所知道的差异?

类型转换(有时也被称为类型转换)

在期望另一个的上下文中使用一种类型的值.

非转换类型转换(有时称为类型双关语)

不会改变基础位的更改.

强迫

当周围上下文需要第二种类型时,编译器自动将一种类型的值转换为另一种类型的值的过程.

c# oop

78
推荐指数
3
解决办法
4万
查看次数

T-sql - 确定值是否为整数

我想确定一个值是否为整数(如TryParse在.NET中).不幸的是ISNUMERIC,我不适合我,因为我只想解析整数而不是每种数字.有ISINT什么东西吗?

这里有一些代码可以清楚地表达出来.如果MY_FIELD不是int,则此代码将失败:

SELECT @MY_VAR = CAST(MY_FIELD AS INT)
FROM MY_TABLE
WHERE MY_OTHER_FIELD = 'MY_FILTER'
Run Code Online (Sandbox Code Playgroud)

谢谢

t-sql sql-server integer casting isnumeric

40
推荐指数
5
解决办法
14万
查看次数

制作一组随机的int

我试图做的是生成随机int值的数组,其中随机值在min和max之间取得.

到目前为止,我想出了这段代码:

int Min = 0;
int Max = 20;

int[] test2 = new int[5];
Random randNum = new Random();
foreach (int value in test2)
{
    randNum.Next(Min, Max);
}
Run Code Online (Sandbox Code Playgroud)

但它还没有完全发挥作用.我想我可能只缺少1行或其他东西.任何人都可以帮我推动我朝着正确的方向前进吗?

c# arrays random int

27
推荐指数
1
解决办法
8万
查看次数

Lambda Expression的工作原理

在一次采访中,面试官问我以下查询

int[] array = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Func<int, int> func = i =>
{
    Console.Write(array[i]);
    return i;
};

var result = array.Where(e => e <= func(2)).ToArray();
Run Code Online (Sandbox Code Playgroud)

任何人都会指导我如何e <= func(2)运作?以及如何最后一行即

var result = array.Where(e => e <= func(2)).ToArray();
Run Code Online (Sandbox Code Playgroud)

作品?

c# linq lambda

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

C#动态选择字符串列表

我正试图List从我的动态对象列表中获取字符串,它一直说:

错误1无法将类型' System.Collections.Generic.List<dynamic>' 隐式转换为' System.Collections.Generic.List<string>'

我正在选择一个房产并使用.ToString()它:

var objects = new List<dynamic>();
//filling objects here

List<string> things = objects.Select(x => x.nameref.ToString()).ToList();
Run Code Online (Sandbox Code Playgroud)

那么它不是一个有效的字符串列表吗?为什么编译器假设此列表是类型的dynamic

我也试过转换这个答案,但它一直给我同样的错误.

谁知道怎么做List<string>

编辑:

为什么不工作?因为你可以像这样弄乱:

public class Test
{
    public int ToString()
    {
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

并且编译器不知道是否ToString返回stringint.

.net c# dynamic

18
推荐指数
3
解决办法
3893
查看次数

阅读xml的最佳方式

我有一个像这样的xml文档:

<Students>
<student name="A" class="1"/>
<student name="B"class="2"/>
<student name="c" class="3"/>
</Students>
Run Code Online (Sandbox Code Playgroud)

我想用来XmlReader阅读这个xml并返回一个学生列表List<student>.我知道这可以实现如下:

 List<Student> students = new List<Student>();
    XmlReader reader = XmlReader.Create("AppManifest.xml");
    while (reader.Read())
    {
       if (reader.NodeType == XmlNodeType.Element && reader.Name == "student")
       {
            students.Add(new Student()
            {
                 Name = reader.GetAttribute("name"),
                 Class = reader.GetAttribute("Class")
             });
        }
     }
Run Code Online (Sandbox Code Playgroud)

我只想知道是否有更好的解决方案?

我正在使用silverlight 4.xml结构是静态的,即.它将只有一个Students节点,所有具有上述属性的学生节点将只在那里.

c# xml silverlight silverlight-4.0

17
推荐指数
2
解决办法
3万
查看次数

Java char数组似乎每个char需要超过2个字节

当我运行以下程序(运行"java -Xmx151M -cp . com.some.package.xmlfun.Main")时:

package com.some.package.xmlfun;
public class Main {

    public static void main(String [] args) {
        char [] chars = new char[50 * 1024 * 1024];

    }
}
Run Code Online (Sandbox Code Playgroud)

我需要将最大内存增加到至少151M(-Xmx151M).因此,当我增加数组大小时,需要增加限制:

  • 50*1024*1024 - > -Xmx151M
  • 100*1024*1024 - > -Xmx301M
  • 150*1024*1024 - > -Xmx451M

为什么看起来java每个字符需要3个字节,而不是文档建议的2个字节?

此外,当我类似地创建长数组时,似乎每个长度需要12个字节,而不是8个,使用int它需要6个字节而不是4个.通常看起来它需要array_size*element_size*1.5

用.编译 - javac \com\som\package\xmlfun\\*java

跑步 - java -Xmx151M -cp . com.some.package.xmlfun.Main

java primitive jvm sizeof char

15
推荐指数
2
解决办法
451
查看次数

使用三元运算符:"仅分配,调用,增量......"

我有动作字典定义为:

var actions = new Dictionary<string, Action<string, string>>();
Run Code Online (Sandbox Code Playgroud)

我把行动放在:

actions.Add("default", (value, key) => result.Compare(value, properties[key], Comparers.SomeComparer, key));
...
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码来运行它:

if (actions.ContainsKey(pair.Key))
{
    actions[pair.Key](pair.Value, pair.Key);
}
else
{
    actions[""](pair.Value, pair.Key);
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我想用'?' 缩短的注意事项:

actions.ContainsKey(pair.Key) ? actions[pair.Key](pair.Value, pair.Key) : actions[""](pair.Value, pair.Key);
Run Code Online (Sandbox Code Playgroud)

此代码显示错误:

错误1只能将赋值,调用,递增,递减和新对象表达式用作语句

actions[pair.Key](pair.Value, pair.Key) 不是电话吗?我错过了什么吗?是否可以使用'?' 动作词典的符号?我试图找到一些相关的东西,但很难找到关于'?'的任何内容.运算符和此错误,因为'?' 被谷歌忽略了.

.net c#

15
推荐指数
4
解决办法
5251
查看次数

用C#替换流中的字符串(不覆盖原始文件)

我有一个文件,我打开流并传递给另一个方法.但是,我想在将流传递给另一个方法之前替换文件中的字符串.所以:

string path = "C:/...";
Stream s = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
//need to replace all occurrences of "John" in the file to "Jack" here.
CallMethod(s);
Run Code Online (Sandbox Code Playgroud)

不应修改原始文件,仅修改流.最简单的方法是什么?

谢谢...

.net c# string filestream

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

我可以在TabControl上的标签上删除虚线焦点矩形吗?

我有一个标签控件,需要删除所选标签周围的虚线焦点矩形.

我已将TabControl的TabStop属性设置为false.但是,如果单击选项卡并Tab按键,则会在tabname周围显示虚线矩形.

我试过创建自己的TabControl并试过这个

class MyTabControl : TabControl
{
        public MyTabControl()
        {
            TabStop = false;
            DrawMode = TabDrawMode.OwnerDrawFixed;
            DrawItem += new DrawItemEventHandler(DoMoreTabControl_DrawItem);
            Invalidate();
        }
}
Run Code Online (Sandbox Code Playgroud)

但是,仍然会出现虚线矩形.

我也尝试重写该MyTabControl.OnPaint()方法,但它没有帮助.

有没有办法实现这个目标?

.net c# tabcontrol focus winforms

9
推荐指数
2
解决办法
3549
查看次数