Ваш код хорошо работал в VB.NET, потому что он неявно делает любые броски, в то время как C# имеет и неявные и явные.
В C# преобразование из десятичного числа для удвоения является явным, поскольку Вы теряете точность. Например, 1.1 не может быть точно выражен как двойное, но может как десятичное число (см." Числа с плавающей точкой - более неточный, чем Вы думаете " по причине почему).
В VB преобразование было добавлено для Вас компилятором:
decimal trans = trackBar1.Value / 5000m;
this.Opacity = (double) trans;
то, Что (double)
должен быть явно указан в C#, но может быть , подразумевало более 'прощающим' компилятором VB.
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id (N'[dbo].[IsSomething]') AND OBJECTPROPERTY(id, N'IsFunction') = 1)
DROP function IsSomething
GO
Ответ на ваш отредактированный вопрос:
if object_id('IsSomething', 'fn') is not null drop function IsSomething
go
Шаблон из Visual Studio 2008 Добавить -> Сценарий хранимой процедуры
равен
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'Stored_Procedure_Name')
BEGIN
DROP Procedure Stored_Procedure_Name
END
GO
CREATE Procedure Stored_Procedure_Name
/*
(
@parameter1 int = 5,
@parameter2 datatype OUTPUT
)
*/
AS
GO
/*
GRANT EXEC ON Stored_Procedure_Name TO PUBLIC
GO
*/
Для процедуры Sql Server Management Studio дает следующее сценарий для удаления
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_DeleteXyz]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[usp_DeleteXyz]
аналогично для генерируемой функции сценарий
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[udf_GetXyz]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[udf_GetXyz]
Я в основном видел последние формы (двухстрочные версии) в большинстве кодовых баз, над которыми я работал, и нет необходимости объявлять переменную.
Вот так
IF OBJECT_ID('YourObject', 'ObjectsType') IS NOT NULL DROP <ObjectsType> [YourObject]
Похоже на любой другой язык, где вы пытаетесь объявить одну и ту же глобальную переменную несколько раз. Обычно мы не пишем:
var a;
a = 0;
...
...
undefine a;
a = 1;
...
...
undefine a;
a = 2;
Мне кажется, вам просто нужно знать структуру кода, который вы пишете.
Я бы не стал рассматривать объявленную переменную как «объект базы данных», BTW . Но ваш вопрос имеет больше смысла, если по какой-то причине вы это делаете.