标签: unchecked

在什么情况下我会将操作指定为未选中?

例如:

int value = Int32.MaxValue;

unchecked
{
    value += 1;
}
Run Code Online (Sandbox Code Playgroud)

这有什么用?你能想到吗?

c# math unchecked

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

如何明确设置复选框未选中

我有一个带有过渡文档类型的xhtml页面,其中有一个复选框,我想在加载后取消选中.没有JavaScript!在Firefox 3.5中(例如,可能有其他浏览器)用户可以检查输入,而不是重新加载页面并检查输入.我怎样才能克服这种行为?

html checkbox unchecked

13
推荐指数
3
解决办法
5万
查看次数

在JSP文件中抑制Java未经检查的警告

我有一个使用jstl和Struts 1标签的遗留webapp.当我使用Java 5/6预编译JSP文件时,jstl和Struts 1标签会抛出有关"未检查或不安全操作"的警告.例如,如果我使用以下标记:

<%@ page import="/anotherpage.inc" %>
Run Code Online (Sandbox Code Playgroud)

抛出以下警告:

[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
Run Code Online (Sandbox Code Playgroud)

如果我使用-Xlint重新编译:unchecked,我会获得有关违规JSP标记库的内部工作的详细信息.我想压制所有未经检查的操作警告.我认为使用-Xlint:-unchecked会抑制警告,但事实并非如此.

在编译JSP页面时如何禁止这些警告?重新编写JSP标记库或更新一千个JSP页面是不切实际的.我正在寻找一个编译器标志来全局禁用警告,所以我可以看到除了未经检查的警告之外的所有警告.谢谢!

java generics jsp unchecked

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

Java泛型SuppressWarnings("未选中")之谜

为什么代码替代(1)编译时没有警告,代码替代(2)产生"未经检查的强制转换"警告?

两者共同:

class Foo<T> {
    Foo( T [] arg ) {
    }
}
Run Code Online (Sandbox Code Playgroud)

替代方案(1):

class Bar<T> extends Foo<T> {
    protected static final Object [] EMPTY_ARRAY = {};

    @SuppressWarnings("unchecked")
    Bar() {
         super( (T []) EMPTY_ARRAY );
    }
}
Run Code Online (Sandbox Code Playgroud)

替代方案(2):

class Bar<T> extends Foo<T> {
    @SuppressWarnings("unchecked")
    Bar() {
         super( (T []) EMPTY_ARRAY );
    }

    protected static final Object [] EMPTY_ARRAY = {};
}
Run Code Online (Sandbox Code Playgroud)

备选方案(2)产生:

javac -Xlint:unchecked Foo.java Bar.java 
Bar.java:4: warning: [unchecked] unchecked cast
             super( (T []) EMPTY_ARRAY );
                           ^
  required: T[]
  found: …
Run Code Online (Sandbox Code Playgroud)

java generics unchecked suppress-warnings java-7

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

我为什么要明确地围绕"未选中"?

有没有人能够解释我这种奇怪的行为?

    int i = 0x1234;
    byte b1 = (byte)i;
    byte b2 = (byte)0x1234;         //error: const value '4660' can't convert to byte (use unchecked)
    byte b3 = unchecked((byte)0x1234);
    byte b4 = checked((byte)i);     //throws
    byte b5 = (byte)(int)0x1234;    //error: same as above
Run Code Online (Sandbox Code Playgroud)

注意:它是一个空的控制台应用程序,没有启用算术检查(默认情况下).提前谢谢大家.

编辑:我应该足够清楚,但不是所有人.

我知道一个单词不能适合一个字节.但是,默认情况下,C#程序允许某些"危险"操作,主要是出于性能原因.

类似地,我可以将两个大整数相加并且根本没有溢出.

我的奇怪是关于上面的编译时错误:编译b1强制转换/赋值,b2无法编译.显然没有区别,因为两者都是Int32具有相同的值.

希望现在很清楚.

c# casting unchecked

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

为什么不简单地禁用未经检查的警告?

当开发人员与非通用API交互时,他们通常会遇到"未经检查"的警告.请考虑以下示例:

import java.util.AbstractList;

import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class IterableNodeList<T extends Node> extends AbstractList<T>
{
    private NodeList list;

    public IterableNodeList(NodeList list)
    {
        this.list = list;
    }

    public T get(int index)
    {
        return (T)this.list.item(index);
    }

    public int size()
    {
        return this.list.getLength();
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,人们可以投入努力以这样的方式编写它,即没有警告:T在类和构造函数参数上使用类型参数Class<T>,匹配成员变量和cast()调用.

或者,可以考虑简单地编辑IDE配置和构建脚本(例如Maven POM)以完全禁用此编译器警告.现在,如果我们这样做,代码可以保持原样,但我确信做必须有缺点.但是,我想不出任何合理,现实的例子

  • 这个警告提供的价值超过"坚持在@SuppressWarnings这里,无论如何没有其他选择",以及在哪里
  • 生成的代码实际上与我们忽略(禁用)警告的代码不同(并且更安全).

你能想到这样的例子或者说出为什么在全球范围内禁用这些"未经检查"的警告是个坏主意的另一个原因吗?或者这实际上是个好主意?

UPDATE

之前的例子实际上没有引发警告.现在有些答案不再有意义了.抱歉给你带来不便.

java generics unchecked

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

在VB.Net中进行未经检查的整数加法的最快方法?

我有一个项目,我想默认检查算术,除了一个性能敏感点.不幸的是,VB.Net没有"未经检查"的块.

理想情况下,框架会有一些带有显式未经检查算术的整数类型,但我没有找到类似的东西.我确实发现表达式树具有用于未经检查的操作的二进制表达式,但是委托开销取消了未经检查的优势(然后是一些).

目前我在进行算术运算之前将输入转换为UInt64/Int64,然后转换回(使用按位并确保范围内).它比未经检查的算术慢50%(根据分析).

使用未经检查的算术将算术敏感部分移动到项目可能会起作用,但是为它自己提供一个程序集似乎有些过分.

.net vb.net math unchecked

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

来自unchecked()的奇怪结果,可能的编译器错误?

以下代码段评估为零:

int result = unchecked((int)double.MaxValue);
Run Code Online (Sandbox Code Playgroud)

然而,如果你这样做:

double x = double.MaxValue
int result = (int)x;
Run Code Online (Sandbox Code Playgroud)

结果是(你会猜到这个吗?)int.MinValue.仅这个事实就足够了[见下文],但我的印象unchecked是强迫编译器发出代码,假装不知道转换肯定会失败和/或发生某些溢出.换句话说,它应该给出与编译器不知道所涉及的值时相同的结果(假设它是在禁用"检查算术溢出"的情况下编译的)

那么,这里发生了什么?我对unchecked错误的理解是什么?

根据C#/ .NET标准,其中一个结果是"错误的"吗?


编辑:int.MinValue很容易解释:cvttsd2si当溢出但异常被屏蔽时给出0x80000000.这是JIT编译器使用的指令,如反汇编窗口中所示.但这并不能解决问题的任何部分.


根据ECMA 334(C#2规范),unchecked关键字应始终截断,因此在这两种情况下结果应为零:

int result1 = unchecked((int)double.MaxValue);
double x = double.MaxValue;
int result2 = unchecked((int)x);
Run Code Online (Sandbox Code Playgroud)

但它不是,第二个给出int.MinValue.这对我来说仍然像编译器错误.

c# casting unchecked

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

CheckBox在自定义列表视图中滚动时未选中

我知道这个问题一直被问到,但我仍然无法找到真正帮助我的建议.每当列表向下滚动时,都会取消选中该复选框.是的我正在使用布尔数组来存储值,但这仍然无法解决问题.这是我的代码.请为此建议一个解决方案.谢谢.

 public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
        final ViewHolder holder;
final boolean[] itemChecked=new boolean[30];

    LayoutInflater inflater =  context.getLayoutInflater();  
    if(convertView==null)  
    {  
        convertView = inflater.inflate(R.layout.custom_list, null);
        holder = new ViewHolder();  
        holder.txtViewTitle = (TextView) convertView.findViewById(R.id.title_text);  
        holder.txtViewDescription = (TextView) convertView.findViewById(R.id.description_text);  
        holder.cb=(CheckBox) convertView.findViewById(R.id.cb);
        convertView.setTag(holder);  

    }  

    else  
    {
        holder=(ViewHolder)convertView.getTag();  

     }  

    holder.cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                 itemChecked[position] = isChecked;
                 if(itemChecked[position])
                 {
                     holder.cb.setChecked(true);
                 }
                 else
                 {
                     holder.cb.setChecked(false);
                 } …
Run Code Online (Sandbox Code Playgroud)

checkbox android listview unchecked

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

使用未经检查的上下文是否会损害C#中的性能或可移植性?

我想实现一个快速哈希函数,它将使用int数据类型并依赖于整数溢出.MSDN说,为了保证溢出不会触发异常,我必须unchecked为该代码使用块.

假设我只在unchecked块中包围该计算.我的代码会因此而出现任何性能或可移植性问题吗?

.net c# performance portability unchecked

8
推荐指数
3
解决办法
2819
查看次数