Відповіді:
Спробуйте це:
int x = Int32.Parse(TextBoxD1.Text);
або ще краще:
int x = 0;
Int32.TryParse(TextBoxD1.Text, out x);
Також, оскільки return Int32.TryParse
a, bool
ви можете використовувати його повернене значення для прийняття рішень про результати спроби розбору:
int x = 0;
if (Int32.TryParse(TextBoxD1.Text, out x))
{
// you know that the parsing attempt
// was successful
}
Якщо вам цікаво, то різниця між Parse
і TryParse
найкраще підсумувати наступним чином :
Метод TryParse схожий на метод Parse, за винятком того, що метод TryParse не кидає винятку, якщо перетворення не вдалося. Це виключає необхідність використовувати обробку виключень для тестування на FormatException у випадку, якщо s недійсний і не може бути успішно проаналізований. - MSDN
Int64.Parse()
. Якщо вхід не-int, ви отримаєте execption і стек сліду з Int64.Parse
, або булевим False
з Int64.TryParse()
, тому вам знадобиться if, наприклад if (Int32.TryParse(TextBoxD1.Text, out x)) {}
.
Convert.ToInt32( TextBoxD1.Text );
Використовуйте це, якщо ви впевнені, що вміст текстового поля є дійсним int
. Більш безпечний варіант
int val = 0;
Int32.TryParse( TextBoxD1.Text, out val );
Це забезпечить вам деяке значення за замовчуванням, яке ви можете використовувати. Int32.TryParse
також повертає булеве значення, що вказує, чи вдалося його розібрати чи ні, тому ви навіть можете використовувати його як умову if
заяви.
if( Int32.TryParse( TextBoxD1.Text, out val ){
DoSomething(..);
} else {
HandleBadInput(..);
}
int myInt = int.Parse(TextBoxD1.Text)
Іншим способом було б:
bool isConvertible = false;
int myInt = 0;
isConvertible = int.TryParse(TextBoxD1.Text, out myInt);
Різниця між двома полягає в тому, що перше буде кидати виняток, якщо значення у вашому текстовому полі не вдасться перетворити, тоді як друге просто поверне помилкове.
code
int NumericJL; bool isNum = int.TryParse (nomeeJobBand, з NumericJL); if (isNum) // Повторний JL здатний перейти до int, тоді продовжуйте для порівняння {if (! (NumericJL> = 6)) {// Nominate} // else {}}
Будьте обережні, використовуючи Convert.ToInt32 () на картці!
Він поверне UTF-16 код символу !
Якщо ви отримаєте доступ до рядка лише в певній позиції за допомогою [i]
оператора індексації, він поверне a, char
а не a string
!
String input = "123678";
^
|
int indexOfSeven = 4;
int x = Convert.ToInt32(input[indexOfSeven]); // Returns 55
int x = Convert.ToInt32(input[indexOfSeven].toString()); // Returns 7
int x = 0;
int.TryParse(TextBoxD1.Text, out x);
Оператор TryParse повертає булеве значення, яке відображає, чи вдалося проаналізувати чи ні. Якщо це вдалося, розібране значення зберігається у другому параметрі.
Для отримання більш детальної інформації див. Метод Int32.TryParse (String, Int32) .
Насолоджуйся цим...
int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
Хоча тут уже багато рішень, які описують int.Parse
, у всіх відповідях бракує чогось важливого. Зазвичай рядкові подання числових значень відрізняються за культурою. Елементи числових рядків, такі як символи валюти, групові (або тисячі) роздільники та десяткові роздільники, залежать від культури.
Якщо ви хочете створити надійний спосіб розбору рядка на ціле число, тому важливо враховувати інформацію про культуру. Якщо цього не зробити, будуть використані поточні налаштування культури . Це може принести користувачеві досить неприємний сюрприз - або ще гірше, якщо ви розбираєте формати файлів. Якщо ви просто хочете розбирати англійську мову, краще просто зробити це явним шляхом, вказавши параметри культури, які слід використовувати:
var culture = CultureInfo.GetCulture("en-US");
int result = 0;
if (int.TryParse(myString, NumberStyles.Integer, culture, out result))
{
// use result...
}
Для отримання додаткової інформації читайте про CultureInfo, зокрема NumberFormatInfo на MSDN.
Ви можете написати власний метод розширення
public static class IntegerExtensions
{
public static int ParseInt(this string value, int defaultValue = 0)
{
int parsedValue;
if (int.TryParse(value, out parsedValue))
{
return parsedValue;
}
return defaultValue;
}
public static int? ParseNullableInt(this string value)
{
if (string.IsNullOrEmpty(value))
{
return null;
}
return value.ParseInt();
}
}
І куди в коді просто дзвоніть
int myNumber = someString.ParseInt(); // Returns value or 0
int age = someString.ParseInt(18); // With default value 18
int? userId = someString.ParseNullableInt(); // Returns value or null
У цьому конкретному випадку
int yourValue = TextBoxD1.Text.ParseInt();
StringExtensions
замість IntegerExtensions
, оскільки ці методи розширення діють на a, string
а не на an int
?
Як пояснено в документації на TryParse , TryParse () повертає логічне значення, яке вказує на те, що знайдено дійсне число:
bool success = Int32.TryParse(TextBoxD1.Text, out val);
if (success)
{
// Put val in database
}
else
{
// Handle the case that the string doesn't contain a valid number
}
int x = Int32.TryParse(TextBoxD1.Text, out x) ? x : 0;
Ви можете використовувати будь-який,
int i = Convert.ToInt32(TextBoxD1.Text);
або
int i = int.Parse(TextBoxD1.Text);
//May be quite some time ago but I just want throw in some line for any one who may still need it
int intValue;
string strValue = "2021";
try
{
intValue = Convert.ToInt32(strValue);
}
catch
{
//Default Value if conversion fails OR return specified error
// Example
intValue = 2000;
}
Ви можете перетворити рядок в int в C #, використовуючи:
Функції класу новонаверненого тобто Convert.ToInt16()
, Convert.ToInt32()
, Convert.ToInt64()
або за допомогою Parse
і TryParse
функції. Приклади наведені тут .
Ви також можете скористатися методом розширення , щоб він був більш читабельним (хоча всі вже звикли до звичайних функцій Parse).
public static class StringExtensions
{
/// <summary>
/// Converts a string to int.
/// </summary>
/// <param name="value">The string to convert.</param>
/// <returns>The converted integer.</returns>
public static int ParseToInt32(this string value)
{
return int.Parse(value);
}
/// <summary>
/// Checks whether the value is integer.
/// </summary>
/// <param name="value">The string to check.</param>
/// <param name="result">The out int parameter.</param>
/// <returns>true if the value is an integer; otherwise, false.</returns>
public static bool TryParseToInt32(this string value, out int result)
{
return int.TryParse(value, out result);
}
}
І тоді ви можете назвати це так:
Якщо ви впевнені, що ваш рядок є цілим числом, як-от "50".
int num = TextBoxD1.Text.ParseToInt32();
Якщо ви не впевнені в собі і хочете запобігти збоїв.
int num;
if (TextBoxD1.Text.TryParseToInt32(out num))
{
//The parse was successful, the num has the parsed value.
}
Щоб зробити його більш динамічним, щоб ви могли розібрати його також, щоб подвоїтись, плавати тощо, ви можете зробити загальне розширення.
Перетворення string
в int
може бути зроблено для: int
, Int32
, Int64
та інших типів даних , що відображають типів даних цілих числа в .NET
Нижче показаний приклад конверсії:
Цей показ (для інформації) елемента адаптера даних ініціалізований до значення int. Те саме можна зробити безпосередньо, як,
int xxiiqVal = Int32.Parse(strNabcd);
Вих.
string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );
Це зробило б
string x = TextBoxD1.Text;
int xi = Convert.ToInt32(x);
Або ви можете використовувати
int xi = Int32.Parse(x);
Для отримання додаткової інформації зверніться до Мережі розробників Microsoft
Ви можете зробити так, як нижче, без TryParse або вбудованих функцій:
static int convertToInt(string a)
{
int x = 0;
for (int i = 0; i < a.Length; i++)
{
int temp = a[i] - '0';
if (temp != 0)
{
x += temp * (int)Math.Pow(10, (a.Length - (i+1)));
}
}
return x;
}
int i = Convert.ToInt32(TextBoxD1.Text);
Ви можете перетворити рядок у ціле значення за допомогою методу розбору.
Наприклад:
int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
Я завжди роблю це так:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace example_string_to_int
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string a = textBox1.Text;
// This turns the text in text box 1 into a string
int b;
if (!int.TryParse(a, out b))
{
MessageBox.Show("This is not a number");
}
else
{
textBox2.Text = a+" is a number" ;
}
// Then this 'if' statement says if the string is not a number, display an error, else now you will have an integer.
}
}
}
Ось як я це зробив би.
Якщо ви шукаєте довгий шлях, просто створіть свій один метод:
static int convertToInt(string a)
{
int x = 0;
Char[] charArray = a.ToCharArray();
int j = charArray.Length;
for (int i = 0; i < charArray.Length; i++)
{
j--;
int s = (int)Math.Pow(10, j);
x += ((int)Char.GetNumericValue(charArray[i]) * s);
}
return x;
}
МЕТОД 1
int TheAnswer1 = 0;
bool Success = Int32.TryParse("42", out TheAnswer1);
if (!Success) {
Console.WriteLine("String not Convertable to an Integer");
}
МЕТОД 2
int TheAnswer2 = 0;
try {
TheAnswer2 = Int32.Parse("42");
}
catch {
Console.WriteLine("String not Convertable to an Integer");
}
МЕТОД 3
int TheAnswer3 = 0;
try {
TheAnswer3 = Int32.Parse("42");
}
catch (FormatException) {
Console.WriteLine("String not in the correct format for an Integer");
}
catch (ArgumentNullException) {
Console.WriteLine("String is null");
}
catch (OverflowException) {
Console.WriteLine("String represents a number less than"
+ "MinValue or greater than MaxValue");
}
Цей код працює для мене у Visual Studio 2010:
int someValue = Convert.ToInt32(TextBoxD1.Text);
Це працює для мене:
using System;
namespace numberConvert
{
class Program
{
static void Main(string[] args)
{
string numberAsString = "8";
int numberAsInt = int.Parse(numberAsString);
}
}
}
Можна спробувати наступне. Він буде працювати:
int x = Convert.ToInt32(TextBoxD1.Text);
Значення рядка в змінній TextBoxD1.Text буде перетворено в Int32 і збережеться в x.
У C # v.7 ви можете використовувати вбудований параметр без додаткового оголошення змінної:
int.TryParse(TextBoxD1.Text, out int x);
out
відхиляються параметри в C # зараз?
Це може вам допомогти; D
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
float Stukprijs;
float Aantal;
private void label2_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("In de eersre textbox staat een geldbedrag." + Environment.NewLine + "In de tweede textbox staat een aantal." + Environment.NewLine + "Bereken wat er moetworden betaald." + Environment.NewLine + "Je krijgt 15% korting over het bedrag BOVEN de 100." + Environment.NewLine + "Als de korting meer dan 10 euri is," + Environment.NewLine + "wordt de korting textbox lichtgroen");
}
private void button1_Click(object sender, EventArgs e)
{
errorProvider1.Clear();
errorProvider2.Clear();
if (float.TryParse(textBox1.Text, out Stukprijs))
{
if (float.TryParse(textBox2.Text, out Aantal))
{
float Totaal = Stukprijs * Aantal;
string Output = Totaal.ToString();
textBox3.Text = Output;
if (Totaal >= 100)
{
float korting = Totaal - 100;
float korting2 = korting / 100 * 15;
string Output2 = korting2.ToString();
textBox4.Text = Output2;
if (korting2 >= 10)
{
textBox4.BackColor = Color.LightGreen;
}
else
{
textBox4.BackColor = SystemColors.Control;
}
}
else
{
textBox4.Text = "0";
textBox4.BackColor = SystemColors.Control;
}
}
else
{
errorProvider2.SetError(textBox2, "Aantal plz!");
}
}
else
{
errorProvider1.SetError(textBox1, "Bedrag plz!");
if (float.TryParse(textBox2.Text, out Aantal))
{
}
else
{
errorProvider2.SetError(textBox2, "Aantal plz!");
}
}
}
private void BTNwissel_Click(object sender, EventArgs e)
{
//LL, LU, LR, LD.
Color c = LL.BackColor;
LL.BackColor = LU.BackColor;
LU.BackColor = LR.BackColor;
LR.BackColor = LD.BackColor;
LD.BackColor = c;
}
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show("zorg dat de kleuren linksom wisselen als je op de knop drukt.");
}
}
}